<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let a = 12;
        let b = 10;
        let c = 5;
        /* 因为自操作运算后置是先参加当前运算后再运算自己的运算, 所以当前的运算是为赋值,而a的值为12,所以d为12,而后进行a++运算所以a已为13 */
        let d = a++;			// a = 13 d = 12
        /* 因为自操作运算前置是先改变自己的运算再进行别的运算,所以当前运算为++b,而b的值为10,所以运算后为11,而后的运算为赋值,把b运算后的值赋给e,所以e为11 */
        let e = ++b;
        /* 因为自操作后置运算是先进行当前运算再进行自身的运算,所以最先开始的d依然为12,而c为5,加完后为17,再把17赋值给f,从而f为17。最后进行d的运算,所以d++后d已为13 */
        let f = c + d++;
        /* 因为自操作运算前置运算是先进行自身的运算改变自身的结果再去进行别的运算,所以是先执行++d的运算,而上面d的值已为13,所以++d后变为14,而后再与c进行加法运算,c为5,所以结果为19,再把19赋值给g,所以g为19。 */
        let g = c + ++d;
        console.log(d, e, f, g);
        /* 所以最后输出的d结果应为最后运算d的值为14,e输出的为11,f输出为17,g为19 */
    </script>
</body>

</html>